package com.dong.stack;
/*
用栈来模拟队列
 */
import java.util.Stack;

class MyQueue {
    Stack<Integer> stackIn;
    Stack<Integer> stackOut;

    public MyQueue() {
        stackIn = new Stack<>(); //负责进栈
        stackOut =  new Stack<>(); //负责出栈
    }

    //push(x) -- 将一个元素放入队列的尾部
    public void push(int x){
        stackIn.push(x);// stackIn.push将项目推送到此堆栈的顶部
    }

    //pop() -- 从队列首部移除元素
    public void pop(){
        dumpstackIn();
        stackOut.pop(); //stackOut.pop删除此堆栈顶部的对象，并将该对象作为此函数的值返回。
    }

    //peek() -- 返回队列首部的元素
    public void peek(){
        dumpstackIn();
        stackOut.peek();
    }
    //empty() -- 返回队列是否为空。
    public boolean empty(){
        return stackIn.isEmpty()&&stackOut.isEmpty();
    }

    // 如果stackOut为空，那么将stackIn中的元素全部放到stackOut中
    private void dumpstackIn(){
        if (!stackOut.isEmpty()) {
            return;
        }
        while (!stackIn.isEmpty()){
            stackOut.push(stackIn.pop());
        }
    }

}
